//package fxification.test;
//
//import fxification.async.TaskRunner.*;
//import fxification.async.TaskRunner;
//import junit.framework.Assert;
//import junit.framework.TestCase;
//import junit.textui.TestRunner;
//import java.lang.RuntimeException;
//
//public class SimpleTaskRunnerTestCase extends TestCase{
//    public function testTaskRunnerAction(): Void {
//        var sum = 0.0;
//        def taskRunner = TaskRunner.SimpleTask{
//            action:function(){
//                sum = 1 + 2
//            }
//        }
//        Assert.assertNotNull("Action property not set", taskRunner.action);
//        taskRunner.action();
//        Assert.assertTrue("Action fn not invoked correctly", sum == 3);
//    }
//
//    public function testFunctionalTaskRuner() {
//        // test functional form
//        var sum = 0.0;
//        runTask(SimpleTask{
//            action:function(){
//                sum = 2 + 2;
//            }
//            onDone:function(){
//                Assert.assertTrue("Action fn not invoked correctly", sum == 4);
//            }
//        });
//        {}
//    }
//
//    public function testFunctional2TaskRuner() {
//        // test functional form
//        var sum = 0.0;
//        runTask(
//            function(){
//                sum = 2 + 2;{}
//            },
//            function(){
//                Assert.assertTrue("Action fn not invoked correctly", sum == 4);
//            }
//        );
//    }
//
//    public function testTaskRunnerStart(): Void {
//        var sum = 0.0;
//        def task = TaskRunner.SimpleTask {
//            action:function (){
//                sum = 1  + 2;
//            }
//        }
//        task.start();
//
//        FX.deferAction(
//            function(){
//                java.lang.Thread.currentThread().sleep(500.00); // stall a bit
//                Assert.assertTrue("Task not starting after TaskRunner.start()", sum == 3);
//            }
//        );
//    }
//
//    public function testTaskRunnerStartEvents (): Void {
//        var sum = 0;
//        def task:TaskRunner.SimpleTask = TaskRunner.SimpleTask {
//            action: function() {sum = 1 + 2}
//            onStart:function() {
//                Assert.assertTrue("Task not starting after TaskRunner.start()", task.started);
//                task.stop();
//            }
//        }
//        task.start();
//    }
//
//    public function testTaskRunnerCompletion():Void {
//        var sum = 0;
//        def task:TaskRunner.SimpleTask = TaskRunner.SimpleTask {
//            action:function() {sum = 1 + 2}
//            onStart:function(){
//                Assert.assertTrue("Task not starting after TaskRunner.start()", task.started);
//            }
//            onDone:function() {
//                Assert.assertTrue("Task not starting after TaskRunner.start()", sum == 3);
//                Assert.assertTrue("Task not mark succeeded when done.", task.succeeded);
//                Assert.assertTrue("Task not mark done when done.", task.succeeded);
//                Assert.assertTrue("Task not mark stopped when done.", not task.stopped);
//            }
//        }
//        task.start();
//    }
//
//    public function testTaskRunnerStop() {
//        var fibbo = 0;
//        def task:TaskRunner.SimpleTask = TaskRunner.SimpleTask {
//            action:function() {
//                for(i in [0..99])
//                    if(not task.stopped){
//                        fibbo = fibbo + fib(i);
//                    }
//            }
//
//            onDone:function(){
//                Assert.assertTrue("Task stopped, but not marked stopped.", task.stopped);
//                Assert.assertTrue("Task stopped, but marked done.", task.done);
//                Assert.assertTrue("Task stopped, but marked succeeded.", not task.succeeded);
//                Assert.assertTrue("Task stopped, but marked succeeded.", not task.succeeded);
//            }
//
//        }
//        task.start();
//          FX.deferAction(
//            function(){
//                java.lang.Thread.currentThread().sleep(700.00); // stall a bit
//                Assert.assertTrue("Task started, but not marked started.", task.started);
//            }
//        );
//        task.stop();
//    }
//
//    public function fib(n:Number):Integer {
//        if (n <= 1) return n;
//        return fib(n-1) + fib(n-2);
//    }
//
//    public function testTaskException (){
//       var fibbo = 0;
//        def task:TaskRunner.SimpleTask = TaskRunner.SimpleTask {
//            action:function() {
//                for(i in [0..99])
//                    if(i >= 10){
//                        throw new RuntimeException("Number too high")
//                    }
//            }
//
//            onDone:function(){
//                //Assert.assertNotNull(task.causeOfFailure);
//                Assert.assertTrue("Task stopped, but not marked stopped.", task.stopped);
//                Assert.assertTrue("Task stopped, but marked done.", task.done);
//                Assert.assertTrue("Task stopped, but marked succeeded.", not task.succeeded);
//            }
//
//        }
//        task.start();
//        task.stop();
//    }
//}
//
//public function run() {
//    def test = TestRunner{};
//    test.run(test.getTest(SimpleTaskRunnerTestCase.class.getName()));
//}
